
import request from '@/utils/request.js'
// import { getToken } from '@/utils/token.js' // 在拦截器中写过了
// 登录-登录接口
// axios内部会把参数对象转成json字符串格式发给后台
// axios内部会自动携带请求参数（headers）里
// Content-Type:'application/json'帮你添加好
export const loginAPI = ({ mobile, code }) => request({
  url: '/v1_0/authorizations',
  method: 'POST',
  // 请求体
  data: {
    mobile,
    code
  }
})

// 用户关注
export const userFollowedAPI = ({ userId }) => request({
  url: '/v1_0/user/followings',
  method: 'POST',
  data: {
    target: userId
  }
})

// 用户-取消关注
export const userUnFollowedAPI = ({ userId }) => request({
  url: `v1_0/user/followings/${userId}`,
  method: 'DELETE'
})
// 频道-获取所有频道
export const getAllChannelsAPI = () => request({
  url: '/v1_0/channels',
  method: 'GET'
})
// 获取用户选择的频道
// 注意：用户没有登陆，默认返回后台设置的默认列表频道
export const getUserChannelsAPI = () => request({
  url: '/v1_0/user/channels'
  // headers: {
  //   Authorization: `Bearer ${getToken()}`
  // }
})

// 文章 - 获取列表
export const getAllArticleListAPI = ({ channel_id, timestamp }) => {
  return request({
    url: '/v1_0/articles',
    method: 'GET',
    // headers: {
    //   Authorization: `Bearer ${getToken()}`
    // },
    params: {
      // 这里的参数，axios会帮你拼接在URL？后面 （查询字符）
      channel_id,
      timestamp
    }
  })
}

// 文章 - 不感兴趣
export const dislikeArticleAPI = ({ artId }) => {
  return request({
    url: '/v1_0/article/dislikes',
    method: 'POST',
    data: {
      target: artId
    }
    // headers: {
    //   Authorization: `Bearer ${getToken()}`
    // }
  })
}

// 文章 - 反馈垃圾阵容
export const reportArticleAPI = ({ artId, type }) => request({
  url: '/v1_0/article/reports',
  method: 'POST',
  // headers: {
  //   Authorization: `Bearer ${getToken()}`
  // },
  data: {
    target: artId,
    type: type,
    remark: '可写可不写'
  }
})
// 文章 - 获取详情
export const detailAPI = ({ artId }) => request({
  url: `/v1_0/articles/${artId}`
})

// 文章 - 点赞
export const likeArticleAPI = ({ artId }) => request({
  url: '/v1_0/article/likings',
  method: 'POST',
  data: {
    target: artId
  }
})

// 文章 - 取消点赞
export const unlikeArticleAPI = ({ artId }) => request({
  url: `/v1_0/article/likings/${artId}`,
  method: 'DELETE'
})
// 文章 - 评论列表
export const commentsListAPI = ({ id, offset = null, limit = 10 }) => request({
  url: '/v1_0/comments',
  method: 'GET',
  params: { // axiso帮助把params拼接在问后面
    // axios只针对params参数，如果发现键值对，值为null，会忽略掉此参数名和值不懈怠在url？后面
    type: 'a',
    source: id,
    offset,
    limit
  }
})

// 文章评论 - 评论 - 喜欢
export const commentLikingAPI = ({ comId }) => {
  return request({
    url: '/v1_0/comments/likings',
    method: 'POST',
    data: {
      target: comId
    }
  })
}

// 文章评论 - 评论 - 取消喜欢
export const commentDisLikingAPI = ({ comId }) => {
  return request({
    url: `/v1_0/comments/likings/${comId}`,
    method: 'DELETE'
  })
}

// 文章-评论-发布评论
export const commentSendAPI = ({ id, content, art_id = null }) => {
  // 1、axios中，data请求体传参，如果值为null，是不会忽略这个参数的
  // 也睡把参数名和值携带给后台（只有paras遇到null才会忽略）
  // 2、形参art_id可选参数，如果逻辑页面对文章评论，则不需要床底art_id
  // 所以这是，内部art_id值为null就证明此次调用，使文章评论
  const obj = {
    target: id,
    content
  }
  if (art_id !== null) {
    obj.art_id = art_id
  }
  return request({
    url: '/v1_0/comments',
    method: 'POST',
    data: obj
  })
}
// 更新覆盖频道
export const updateChannelsAPI = ({ channels }) => request({
  url: '/v1_0/user/channels',
  method: 'PUT',
  data: {
    channels // 用户已选频道数组
  }
})
// 删除用户指定的频道
export const removeTheChannelAPI = ({ channelId }) => request({
  url: `/v1_0/user/channels/${channelId}`,
  method: 'DELETE'
})
// 搜索 - 联想菜单列表
export const suggestListAPI = ({ keywords }) => request({
  url: '/v1_0/suggestion',
  params: {
    q: keywords
  }
})
// 搜索 - 搜索结果列表
export const SearchResultAPI = ({ page = 1, per_page = 10, q }) => request({
  // 前两个参数不是必须，q为搜索的关键词
  url: '/v1_0/search',
  method: 'GET',
  params: {
    page,
    per_page,
    q
  }
})
// 用户中心-我的
export const userInfoAPI = () => {
  return request({
    url: '/v1_0/user'
  })
}

// 用户中心-个人资料（就为了获取生日）
export const userProfileAPI = () => {
  return request({
    url: 'v1_0/user/profile'
  })
}
// 用户- 更新头像
// 注意: formObj的值必须是一个表单对象
// '{"a": 10, "b": 20}' // 对象格式的JSON字符串
// new FormData() // 表单对象
export const updatePhotoAPI = (formObj) => {
  return request({
    url: '/v1_0/user/photo',
    method: 'PATCH',
    data: formObj
    // 如果你的请求体内容是表单对象, 浏览器会自动携带请求头Content-Type为multipart/form-data
  })
}

// 用户 - 更新资料
export const updateProfileAPI = ({ birthday, username }) => {
  return request({
    url: 'v1_0/user/profile',
    method: 'PATCH',
    data: {
      birthday: birthday,
      name: username
    }
  })
}
